
import java.util.Scanner ;

public class BinaryConverter {

    public static void main( String[] args ) {

        Scanner s = new Scanner( System.in );

        System.out.println( "请输入一个整数:" );

        int inputNumber = s.nextInt() ; // 读取用户输入的整数
        int sign ; // 声明一个变量用来记录整数的符号 ( 约定 正数用 1 、零用 0 、负数用 -1 表示 )
        int absoluteValue ;

        if( inputNumber > 0 ){
            sign = 1 ;
            absoluteValue = inputNumber ; // 正整数
        } else if ( inputNumber == 0 ) {
            sign = 0 ;
            absoluteValue = inputNumber ; // 0
        } else {
            sign = -1 ; 
            absoluteValue = -inputNumber ; // 负整数
        }

        String b = "" ;
        // 根据绝对值求原码 ( 求一个正整数的原码 )
        int x = sign > 0 ? absoluteValue : absoluteValue - 1 ;
        System.out.println( x );
        while( x != 0 ){
            int y = x % 2 ;
            if( sign > 0 ) {
                b = y + b ;
            } else {
                b = ( y == 0 ? 1 : 0 ) + b ;
            }
            x /= 2 ;
        }

        int n = 32 - b.length() ; // 统计需要在高位补充的 0 或 1

        for( int i = 0 ; i < n ; i++ ) {
            b = ( sign >= 0 ? "0" : "1" ) + b ;
        }

        System.out.println( b );
        System.out.println( b.length() );


        /* 可以借助于位运算实现 ( 效率是最高的 ) [ 鸣谢 : 丁锦权 ]
        String b = "" ;
        int a = s.nextInt();
        for(int i=0;i<32;i++){
            int t=( a & 0x80000000 >>> i ) >>> (31-i) ;
            b = b + t ;
        }
        */

        s.close();

    }

}
